main/pin: Fix usage of GError
authorColin Walters <walters@verbum.org>
Wed, 18 Mar 2020 02:13:15 +0000 (02:13 +0000)
committerColin Walters <walters@verbum.org>
Wed, 18 Mar 2020 02:15:34 +0000 (02:15 +0000)
This regressed in https://github.com/ostreedev/ostree/commit/2db79fb398fba2f9ab2e05c517ebccfe1834674b
I noticed this while finally getting the installed tests to run
in FCOS via kola and `ostree admin pin 0` is now aborting because
we were returning TRUE, but no error set.

I don't see a reason to try to continue on if we hit an error;
the original reporter was requesting support for multiple arguments,
but not "ignore invalid requests".

src/ostree/ot-admin-builtin-pin.c

index ced0fcf3de37f8df1b4c523c2015ca5b7038cef4..d4337e33e36f3b2830b9fb4ebfe90487b3d736e7 100644 (file)
@@ -52,39 +52,28 @@ ot_admin_builtin_pin (int argc, char **argv, OstreeCommandInvocation *invocation
       return FALSE;
     }
 
-  unsigned int nsuccess = 0;
   for (unsigned int i = 1; i < argc; i++)
     {
       const char *deploy_index_str = argv[i];
       const int deploy_index = atoi (deploy_index_str);
 
-      g_autoptr(GError) e = NULL;
-      g_autoptr(OstreeDeployment) target_deployment = ot_admin_get_indexed_deployment (sysroot, deploy_index, &e);
+      g_autoptr(OstreeDeployment) target_deployment = ot_admin_get_indexed_deployment (sysroot, deploy_index, error);
       if (!target_deployment)
-        {
-          g_print ("Invalid deployment %s: %s\n", deploy_index_str, e->message);
-          continue;
-        }
+        return FALSE;
 
       gboolean current_pin = ostree_deployment_is_pinned (target_deployment);
       const gboolean desired_pin = !opt_unpin;
       if (current_pin == desired_pin)
         {
           g_print ("Deployment %s is already %s\n", deploy_index_str, current_pin ? "pinned" : "unpinned");
-          nsuccess++;
         }
       else
       {
-        g_autoptr(GError) e = NULL;
-        if (ostree_sysroot_deployment_set_pinned (sysroot, target_deployment, desired_pin, &e))
-          {
-            g_print ("Deployment %s is now %s\n", deploy_index_str, desired_pin ? "pinned" : "unpinned");
-            nsuccess++;
-          }
-        else
-          g_print ("Failed to %s deployment %s: %s\n", desired_pin ? "pin" : "unpin", deploy_index_str, e->message);
+        if (!ostree_sysroot_deployment_set_pinned (sysroot, target_deployment, desired_pin, error))
+          return FALSE;
+        g_print ("Deployment %s is now %s\n", deploy_index_str, desired_pin ? "pinned" : "unpinned");
       }
     }
 
-  return nsuccess > 0;
+  return TRUE;
 }